package com.atguigu.gmall.order.service;


import com.atguigu.gmall.model.enums.ProcessStatus;
import com.atguigu.gmall.model.order.OrderInfo;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

public interface OrderService extends IService<OrderInfo> {

    //保存订单
    Long saveOrderInfo(OrderInfo orderInfo);

    //获取交易号  放缓存和页面
    String getTradeNo(String userId);

    //String tradeNo从页面取     String userId 从缓存取  比较流水号
    Boolean checkTradeNo(String tradeNo,String userId);

    // 删除缓存 交易号
    void deleteTradeNo(String userId);


    // 检查库存
    Boolean checkStock(Long skuId,Integer skuNum);

    void execExpiredOrder(Long orderId);

     /**
     * 根据订单Id 修改订单的状态
     * @param orderId
     * @param processStatus
     */
    void updateOrderStatus(Long orderId, ProcessStatus processStatus);

    /**
     * 根据订单Id 查询订单信息
     * @param orderId
     * @return
     */
    OrderInfo getOrderInfo(Long orderId);

    /**
     * 发送消息给库存！
     * @param orderId
     */
    void sendOrderStatus(Long orderId);


    Map initWareOrder(OrderInfo orderInfo);

    //拆单
    List<OrderInfo> orderSplit(String orderId, String wareSkuMap);

    // 关闭过期订单
    void execExpiredOrder(Long orderId, String flag);

}
